/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dao;

import com.interfaces.IUsuario;
import com.modelo.Reserva;
import com.modelo.Usuario;
import java.util.List;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 *
 * @author RUBÉN
 */
public class UsuarioDAO extends HibernateDaoSupport implements IUsuario {

    
    @Override
    public List<Usuario> listarUsuarios() {
        return this.getHibernateTemplate().find("from Usuario");
    }

    @Override
    public boolean registrarUsuario(Usuario usu) {
        Usuario temp = buscarUsuario(usu);
        if (temp == null) {
            this.getHibernateTemplate().saveOrUpdate(usu);
            return true;
        } else {
            return false;
        }
    }

    @Override
    public Usuario buscarUsuario(Usuario usu) {
        Query query = this.getSession().createQuery("from Usuario where idUsuario = :usu ");
        query.setParameter("usu", usu.getIdUsuario());
        List<Usuario> listado = query.list();
        if (listado.isEmpty()) {
            return null;
        } else {
            return listado.get(0);
        }
    }

    @Override
    public Usuario modificarUsuario(Usuario usu) {
        this.getHibernateTemplate().saveOrUpdate(usu);
        return usu;
    }

    @Override
    public Usuario buscarUsuarioPorCorreo(Usuario usu) {
        Query query = this.getSession().createQuery("from Usuario where correoElectronico = :correo ");
        query.setParameter("correo", usu.getCorreoElectronico());
        List<Usuario> listado = query.list();
        if (listado.isEmpty()) {
            return null;
        } else {
            return listado.get(0);
        }
    }

    @Override
    public List<Reserva> historialInmueble(Usuario usuario) {
        Query query = this.getSession().createQuery("from Reserva where id_usuario = :id ");
        query.setParameter("id", usuario.getIdUsuario());
        List<Reserva> listado = query.list();
        return listado;
    }
}
